{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "source": [
    "先看两个例子"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "0\n1\n"
     ]
    }
   ],
   "source": [
    "print(1 & 0)\n",
    "print(1 & 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "1\n0\n"
     ]
    }
   ],
   "source": [
    "print(1 ^ 0)\n",
    "print(1 ^ 1)"
   ]
  },
  {
   "source": [
    "思路：\n",
    "\n",
    "用&模拟进位\n",
    "\n",
    "用^模拟加(但不进位) "
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "1 16\n"
     ]
    }
   ],
   "source": [
    "# 所以判断两个数就可以这样\n",
    "\n",
    "a = 8\n",
    "b = 9\n",
    "# (a^b) ^ ((a & b) << 1)\n",
    "print(a^b, ((a & b) << 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "65\n5 34 68\n"
     ]
    }
   ],
   "source": [
    "a = 34\n",
    "b = 39\n",
    "print((a^b) ^ ((a & b) << 1)) # 这个结果就不对了,为啥呢？\n",
    "print(a^b, a&b,((a & b) << 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "因为((a & b) << 1)之后，还有进位的,我们继续处理这个进位"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "73\n((a & b) << 1 = 8\n"
     ]
    }
   ],
   "source": [
    "a = 5\n",
    "b = 68\n",
    "print((a^b) ^ ((a & b) << 1))\n",
    "print(\"((a & b) << 1 =\", ((a & b) << 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "73\n((a & b) << 1 = 0\n"
     ]
    }
   ],
   "source": [
    "a=65\n",
    "b = 8\n",
    "print((a^b) ^ ((a & b) << 1))\n",
    "print(\"((a & b) << 1 =\", ((a & b) << 1)) # 到这一步就没有了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "tags": [
     "outputPrepend"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "9 33\n",
      "39 34\n",
      "39 35\n",
      "39 37\n",
      "39 41\n",
      "39 42\n",
      "39 43\n",
      "39 44\n",
      "39 45\n",
      "39 46\n",
      "39 47\n",
      "39 49\n",
      "39 50\n",
      "39 51\n",
      "39 53\n",
      "39 57\n",
      "39 58\n",
      "39 59\n",
      "39 60\n",
      "39 61\n",
      "39 62\n",
      "39 63\n",
      "39 65\n",
      "39 66\n",
      "39 67\n",
      "39 69\n",
      "39 73\n",
      "39 74\n",
      "39 75\n",
      "39 76\n",
      "39 77\n",
      "39 78\n",
      "39 79\n",
      "39 81\n",
      "39 82\n",
      "39 83\n",
      "39 85\n",
      "39 89\n",
      "39 90\n",
      "39 91\n",
      "39 92\n",
      "39 93\n",
      "39 94\n",
      "39 95\n",
      "39 96\n",
      "39 97\n",
      "39 98\n",
      "39 99\n",
      "40 24\n",
      "40 25\n",
      "40 26\n",
      "40 27\n",
      "40 28\n",
      "40 29\n",
      "40 30\n",
      "40 31\n",
      "40 56\n",
      "40 57\n",
      "40 58\n",
      "40 59\n",
      "40 60\n",
      "40 61\n",
      "40 62\n",
      "40 63\n",
      "40 88\n",
      "40 89\n",
      "40 90\n",
      "40 91\n",
      "40 92\n",
      "40 93\n",
      "40 94\n",
      "40 95\n",
      "40 96\n",
      "40 97\n",
      "40 98\n",
      "40 99\n",
      "41 3\n",
      "41 7\n",
      "41 11\n",
      "41 15\n",
      "41 19\n",
      "41 23\n",
      "41 24\n",
      "41 25\n",
      "41 26\n",
      "41 27\n",
      "41 28\n",
      "41 29\n",
      "41 30\n",
      "41 31\n",
      "41 35\n",
      "41 39\n",
      "41 43\n",
      "41 47\n",
      "41 51\n",
      "41 55\n",
      "41 56\n",
      "41 57\n",
      "41 58\n",
      "41 59\n",
      "41 60\n",
      "41 61\n",
      "41 62\n",
      "41 63\n",
      "41 67\n",
      "41 71\n",
      "41 75\n",
      "41 79\n",
      "41 83\n",
      "41 87\n",
      "41 88\n",
      "41 89\n",
      "41 90\n",
      "41 91\n",
      "41 92\n",
      "41 93\n",
      "41 94\n",
      "41 95\n",
      "41 96\n",
      "41 97\n",
      "41 98\n",
      "41 99\n",
      "42 6\n",
      "42 7\n",
      "42 14\n",
      "42 15\n",
      "42 22\n",
      "42 23\n",
      "42 24\n",
      "42 25\n",
      "42 26\n",
      "42 27\n",
      "42 28\n",
      "42 29\n",
      "42 30\n",
      "42 31\n",
      "42 38\n",
      "42 39\n",
      "42 46\n",
      "42 47\n",
      "42 54\n",
      "42 55\n",
      "42 56\n",
      "42 57\n",
      "42 58\n",
      "42 59\n",
      "42 60\n",
      "42 61\n",
      "42 62\n",
      "42 63\n",
      "42 70\n",
      "42 71\n",
      "42 78\n",
      "42 79\n",
      "42 86\n",
      "42 87\n",
      "42 88\n",
      "42 89\n",
      "42 90\n",
      "42 91\n",
      "42 92\n",
      "42 93\n",
      "42 94\n",
      "42 95\n",
      "42 96\n",
      "42 97\n",
      "42 98\n",
      "42 99\n",
      "43 1\n",
      "43 5\n",
      "43 6\n",
      "43 7\n",
      "43 9\n",
      "43 13\n",
      "43 14\n",
      "43 15\n",
      "43 17\n",
      "43 21\n",
      "43 22\n",
      "43 23\n",
      "43 24\n",
      "43 25\n",
      "43 26\n",
      "43 27\n",
      "43 28\n",
      "43 29\n",
      "43 30\n",
      "43 31\n",
      "43 33\n",
      "43 37\n",
      "43 38\n",
      "43 39\n",
      "43 41\n",
      "43 45\n",
      "43 46\n",
      "43 47\n",
      "43 49\n",
      "43 53\n",
      "43 54\n",
      "43 55\n",
      "43 56\n",
      "43 57\n",
      "43 58\n",
      "43 59\n",
      "43 60\n",
      "43 61\n",
      "43 62\n",
      "43 63\n",
      "43 65\n",
      "43 69\n",
      "43 70\n",
      "43 71\n",
      "43 73\n",
      "43 77\n",
      "43 78\n",
      "43 79\n",
      "43 81\n",
      "43 85\n",
      "43 86\n",
      "43 87\n",
      "43 88\n",
      "43 89\n",
      "43 90\n",
      "43 91\n",
      "43 92\n",
      "43 93\n",
      "43 94\n",
      "43 95\n",
      "43 96\n",
      "43 97\n",
      "43 98\n",
      "43 99\n",
      "44 4\n",
      "44 5\n",
      "44 6\n",
      "44 7\n",
      "44 20\n",
      "44 21\n",
      "44 22\n",
      "44 23\n",
      "44 24\n",
      "44 25\n",
      "44 26\n",
      "44 27\n",
      "44 28\n",
      "44 29\n",
      "44 30\n",
      "44 31\n",
      "44 36\n",
      "44 37\n",
      "44 38\n",
      "44 39\n",
      "44 52\n",
      "44 53\n",
      "44 54\n",
      "44 55\n",
      "44 56\n",
      "44 57\n",
      "44 58\n",
      "44 59\n",
      "44 60\n",
      "44 61\n",
      "44 62\n",
      "44 63\n",
      "44 68\n",
      "44 69\n",
      "44 70\n",
      "44 71\n",
      "44 84\n",
      "44 85\n",
      "44 86\n",
      "44 87\n",
      "44 88\n",
      "44 89\n",
      "44 90\n",
      "44 91\n",
      "44 92\n",
      "44 93\n",
      "44 94\n",
      "44 95\n",
      "44 96\n",
      "44 97\n",
      "44 98\n",
      "44 99\n",
      "45 3\n",
      "45 4\n",
      "45 5\n",
      "45 6\n",
      "45 7\n",
      "45 11\n",
      "45 15\n",
      "45 19\n",
      "45 20\n",
      "45 21\n",
      "45 22\n",
      "45 23\n",
      "45 24\n",
      "45 25\n",
      "45 26\n",
      "45 27\n",
      "45 28\n",
      "45 29\n",
      "45 30\n",
      "45 31\n",
      "45 35\n",
      "45 36\n",
      "45 37\n",
      "45 38\n",
      "45 39\n",
      "45 43\n",
      "45 47\n",
      "45 51\n",
      "45 52\n",
      "45 53\n",
      "45 54\n",
      "45 55\n",
      "45 56\n",
      "45 57\n",
      "45 58\n",
      "45 59\n",
      "45 60\n",
      "45 61\n",
      "45 62\n",
      "45 63\n",
      "45 67\n",
      "45 68\n",
      "45 69\n",
      "45 70\n",
      "45 71\n",
      "45 75\n",
      "45 79\n",
      "45 83\n",
      "45 84\n",
      "45 85\n",
      "45 86\n",
      "45 87\n",
      "45 88\n",
      "45 89\n",
      "45 90\n",
      "45 91\n",
      "45 92\n",
      "45 93\n",
      "45 94\n",
      "45 95\n",
      "45 96\n",
      "45 97\n",
      "45 98\n",
      "45 99\n",
      "46 2\n",
      "46 3\n",
      "46 4\n",
      "46 5\n",
      "46 6\n",
      "46 7\n",
      "46 10\n",
      "46 11\n",
      "46 18\n",
      "46 19\n",
      "46 20\n",
      "46 21\n",
      "46 22\n",
      "46 23\n",
      "46 24\n",
      "46 25\n",
      "46 26\n",
      "46 27\n",
      "46 28\n",
      "46 29\n",
      "46 30\n",
      "46 31\n",
      "46 34\n",
      "46 35\n",
      "46 36\n",
      "46 37\n",
      "46 38\n",
      "46 39\n",
      "46 42\n",
      "46 43\n",
      "46 50\n",
      "46 51\n",
      "46 52\n",
      "46 53\n",
      "46 54\n",
      "46 55\n",
      "46 56\n",
      "46 57\n",
      "46 58\n",
      "46 59\n",
      "46 60\n",
      "46 61\n",
      "46 62\n",
      "46 63\n",
      "46 66\n",
      "46 67\n",
      "46 68\n",
      "46 69\n",
      "46 70\n",
      "46 71\n",
      "46 74\n",
      "46 75\n",
      "46 82\n",
      "46 83\n",
      "46 84\n",
      "46 85\n",
      "46 86\n",
      "46 87\n",
      "46 88\n",
      "46 89\n",
      "46 90\n",
      "46 91\n",
      "46 92\n",
      "46 93\n",
      "46 94\n",
      "46 95\n",
      "46 96\n",
      "46 97\n",
      "46 98\n",
      "46 99\n",
      "47 1\n",
      "47 2\n",
      "47 3\n",
      "47 4\n",
      "47 5\n",
      "47 6\n",
      "47 7\n",
      "47 9\n",
      "47 10\n",
      "47 11\n",
      "47 13\n",
      "47 17\n",
      "47 18\n",
      "47 19\n",
      "47 20\n",
      "47 21\n",
      "47 22\n",
      "47 23\n",
      "47 24\n",
      "47 25\n",
      "47 26\n",
      "47 27\n",
      "47 28\n",
      "47 29\n",
      "47 30\n",
      "47 31\n",
      "47 33\n",
      "47 34\n",
      "47 35\n",
      "47 36\n",
      "47 37\n",
      "47 38\n",
      "47 39\n",
      "47 41\n",
      "47 42\n",
      "47 43\n",
      "47 45\n",
      "47 49\n",
      "47 50\n",
      "47 51\n",
      "47 52\n",
      "47 53\n",
      "47 54\n",
      "47 55\n",
      "47 56\n",
      "47 57\n",
      "47 58\n",
      "47 59\n",
      "47 60\n",
      "47 61\n",
      "47 62\n",
      "47 63\n",
      "47 65\n",
      "47 66\n",
      "47 67\n",
      "47 68\n",
      "47 69\n",
      "47 70\n",
      "47 71\n",
      "47 73\n",
      "47 74\n",
      "47 75\n",
      "47 77\n",
      "47 81\n",
      "47 82\n",
      "47 83\n",
      "47 84\n",
      "47 85\n",
      "47 86\n",
      "47 87\n",
      "47 88\n",
      "47 89\n",
      "47 90\n",
      "47 91\n",
      "47 92\n",
      "47 93\n",
      "47 94\n",
      "47 95\n",
      "47 96\n",
      "47 97\n",
      "47 98\n",
      "47 99\n",
      "48 16\n",
      "48 17\n",
      "48 18\n",
      "48 19\n",
      "48 20\n",
      "48 21\n",
      "48 22\n",
      "48 23\n",
      "48 24\n",
      "48 25\n",
      "48 26\n",
      "48 27\n",
      "48 28\n",
      "48 29\n",
      "48 30\n",
      "48 31\n",
      "48 80\n",
      "48 81\n",
      "48 82\n",
      "48 83\n",
      "48 84\n",
      "48 85\n",
      "48 86\n",
      "48 87\n",
      "48 88\n",
      "48 89\n",
      "48 90\n",
      "48 91\n",
      "48 92\n",
      "48 93\n",
      "48 94\n",
      "48 95\n",
      "48 96\n",
      "48 97\n",
      "48 98\n",
      "48 99\n",
      "49 3\n",
      "49 7\n",
      "49 11\n",
      "49 15\n",
      "49 16\n",
      "49 17\n",
      "49 18\n",
      "49 19\n",
      "49 20\n",
      "49 21\n",
      "49 22\n",
      "49 23\n",
      "49 24\n",
      "49 25\n",
      "49 26\n",
      "49 27\n",
      "49 28\n",
      "49 29\n",
      "49 30\n",
      "49 31\n",
      "49 35\n",
      "49 39\n",
      "49 43\n",
      "49 47\n",
      "49 51\n",
      "49 55\n",
      "49 59\n",
      "49 63\n",
      "49 67\n",
      "49 71\n",
      "49 75\n",
      "49 79\n",
      "49 80\n",
      "49 81\n",
      "49 82\n",
      "49 83\n",
      "49 84\n",
      "49 85\n",
      "49 86\n",
      "49 87\n",
      "49 88\n",
      "49 89\n",
      "49 90\n",
      "49 91\n",
      "49 92\n",
      "49 93\n",
      "49 94\n",
      "49 95\n",
      "49 96\n",
      "49 97\n",
      "49 98\n",
      "49 99\n",
      "50 6\n",
      "50 7\n",
      "50 14\n",
      "50 15\n",
      "50 16\n",
      "50 17\n",
      "50 18\n",
      "50 19\n",
      "50 20\n",
      "50 21\n",
      "50 22\n",
      "50 23\n",
      "50 24\n",
      "50 25\n",
      "50 26\n",
      "50 27\n",
      "50 28\n",
      "50 29\n",
      "50 30\n",
      "50 31\n",
      "50 38\n",
      "50 39\n",
      "50 46\n",
      "50 47\n",
      "50 54\n",
      "50 55\n",
      "50 62\n",
      "50 63\n",
      "50 70\n",
      "50 71\n",
      "50 78\n",
      "50 79\n",
      "50 80\n",
      "50 81\n",
      "50 82\n",
      "50 83\n",
      "50 84\n",
      "50 85\n",
      "50 86\n",
      "50 87\n",
      "50 88\n",
      "50 89\n",
      "50 90\n",
      "50 91\n",
      "50 92\n",
      "50 93\n",
      "50 94\n",
      "50 95\n",
      "50 96\n",
      "50 97\n",
      "50 98\n",
      "50 99\n",
      "51 1\n",
      "51 5\n",
      "51 6\n",
      "51 7\n",
      "51 9\n",
      "51 13\n",
      "51 14\n",
      "51 15\n",
      "51 16\n",
      "51 17\n",
      "51 18\n",
      "51 19\n",
      "51 20\n",
      "51 21\n",
      "51 22\n",
      "51 23\n",
      "51 24\n",
      "51 25\n",
      "51 26\n",
      "51 27\n",
      "51 28\n",
      "51 29\n",
      "51 30\n",
      "51 31\n",
      "51 33\n",
      "51 37\n",
      "51 38\n",
      "51 39\n",
      "51 41\n",
      "51 45\n",
      "51 46\n",
      "51 47\n",
      "51 49\n",
      "51 53\n",
      "51 54\n",
      "51 55\n",
      "51 57\n",
      "51 61\n",
      "51 62\n",
      "51 63\n",
      "51 65\n",
      "51 69\n",
      "51 70\n",
      "51 71\n",
      "51 73\n",
      "51 77\n",
      "51 78\n",
      "51 79\n",
      "51 80\n",
      "51 81\n",
      "51 82\n",
      "51 83\n",
      "51 84\n",
      "51 85\n",
      "51 86\n",
      "51 87\n",
      "51 88\n",
      "51 89\n",
      "51 90\n",
      "51 91\n",
      "51 92\n",
      "51 93\n",
      "51 94\n",
      "51 95\n",
      "51 96\n",
      "51 97\n",
      "51 98\n",
      "51 99\n",
      "52 12\n",
      "52 13\n",
      "52 14\n",
      "52 15\n",
      "52 16\n",
      "52 17\n",
      "52 18\n",
      "52 19\n",
      "52 20\n",
      "52 21\n",
      "52 22\n",
      "52 23\n",
      "52 24\n",
      "52 25\n",
      "52 26\n",
      "52 27\n",
      "52 28\n",
      "52 29\n",
      "52 30\n",
      "52 31\n",
      "52 44\n",
      "52 45\n",
      "52 46\n",
      "52 47\n",
      "52 60\n",
      "52 61\n",
      "52 62\n",
      "52 63\n",
      "52 76\n",
      "52 77\n",
      "52 78\n",
      "52 79\n",
      "52 80\n",
      "52 81\n",
      "52 82\n",
      "52 83\n",
      "52 84\n",
      "52 85\n",
      "52 86\n",
      "52 87\n",
      "52 88\n",
      "52 89\n",
      "52 90\n",
      "52 91\n",
      "52 92\n",
      "52 93\n",
      "52 94\n",
      "52 95\n",
      "52 96\n",
      "52 97\n",
      "52 98\n",
      "52 99\n",
      "53 3\n",
      "53 7\n",
      "53 11\n",
      "53 12\n",
      "53 13\n",
      "53 14\n",
      "53 15\n",
      "53 16\n",
      "53 17\n",
      "53 18\n",
      "53 19\n",
      "53 20\n",
      "53 21\n",
      "53 22\n",
      "53 23\n",
      "53 24\n",
      "53 25\n",
      "53 26\n",
      "53 27\n",
      "53 28\n",
      "53 29\n",
      "53 30\n",
      "53 31\n",
      "53 35\n",
      "53 39\n",
      "53 43\n",
      "53 44\n",
      "53 45\n",
      "53 46\n",
      "53 47\n",
      "53 51\n",
      "53 55\n",
      "53 59\n",
      "53 60\n",
      "53 61\n",
      "53 62\n",
      "53 63\n",
      "53 67\n",
      "53 71\n",
      "53 75\n",
      "53 76\n",
      "53 77\n",
      "53 78\n",
      "53 79\n",
      "53 80\n",
      "53 81\n",
      "53 82\n",
      "53 83\n",
      "53 84\n",
      "53 85\n",
      "53 86\n",
      "53 87\n",
      "53 88\n",
      "53 89\n",
      "53 90\n",
      "53 91\n",
      "53 92\n",
      "53 93\n",
      "53 94\n",
      "53 95\n",
      "53 96\n",
      "53 97\n",
      "53 98\n",
      "53 99\n",
      "54 2\n",
      "54 3\n",
      "54 10\n",
      "54 11\n",
      "54 12\n",
      "54 13\n",
      "54 14\n",
      "54 15\n",
      "54 16\n",
      "54 17\n",
      "54 18\n",
      "54 19\n",
      "54 20\n",
      "54 21\n",
      "54 22\n",
      "54 23\n",
      "54 24\n",
      "54 25\n",
      "54 26\n",
      "54 27\n",
      "54 28\n",
      "54 29\n",
      "54 30\n",
      "54 31\n",
      "54 34\n",
      "54 35\n",
      "54 42\n",
      "54 43\n",
      "54 44\n",
      "54 45\n",
      "54 46\n",
      "54 47\n",
      "54 50\n",
      "54 51\n",
      "54 58\n",
      "54 59\n",
      "54 60\n",
      "54 61\n",
      "54 62\n",
      "54 63\n",
      "54 66\n",
      "54 67\n",
      "54 74\n",
      "54 75\n",
      "54 76\n",
      "54 77\n",
      "54 78\n",
      "54 79\n",
      "54 80\n",
      "54 81\n",
      "54 82\n",
      "54 83\n",
      "54 84\n",
      "54 85\n",
      "54 86\n",
      "54 87\n",
      "54 88\n",
      "54 89\n",
      "54 90\n",
      "54 91\n",
      "54 92\n",
      "54 93\n",
      "54 94\n",
      "54 95\n",
      "54 96\n",
      "54 97\n",
      "54 98\n",
      "54 99\n",
      "55 1\n",
      "55 2\n",
      "55 3\n",
      "55 5\n",
      "55 9\n",
      "55 10\n",
      "55 11\n",
      "55 12\n",
      "55 13\n",
      "55 14\n",
      "55 15\n",
      "55 16\n",
      "55 17\n",
      "55 18\n",
      "55 19\n",
      "55 20\n",
      "55 21\n",
      "55 22\n",
      "55 23\n",
      "55 24\n",
      "55 25\n",
      "55 26\n",
      "55 27\n",
      "55 28\n",
      "55 29\n",
      "55 30\n",
      "55 31\n",
      "55 33\n",
      "55 34\n",
      "55 35\n",
      "55 37\n",
      "55 41\n",
      "55 42\n",
      "55 43\n",
      "55 44\n",
      "55 45\n",
      "55 46\n",
      "55 47\n",
      "55 49\n",
      "55 50\n",
      "55 51\n",
      "55 53\n",
      "55 57\n",
      "55 58\n",
      "55 59\n",
      "55 60\n",
      "55 61\n",
      "55 62\n",
      "55 63\n",
      "55 65\n",
      "55 66\n",
      "55 67\n",
      "55 69\n",
      "55 73\n",
      "55 74\n",
      "55 75\n",
      "55 76\n",
      "55 77\n",
      "55 78\n",
      "55 79\n",
      "55 80\n",
      "55 81\n",
      "55 82\n",
      "55 83\n",
      "55 84\n",
      "55 85\n",
      "55 86\n",
      "55 87\n",
      "55 88\n",
      "55 89\n",
      "55 90\n",
      "55 91\n",
      "55 92\n",
      "55 93\n",
      "55 94\n",
      "55 95\n",
      "55 96\n",
      "55 97\n",
      "55 98\n",
      "55 99\n",
      "56 8\n",
      "56 9\n",
      "56 10\n",
      "56 11\n",
      "56 12\n",
      "56 13\n",
      "56 14\n",
      "56 15\n",
      "56 16\n",
      "56 17\n",
      "56 18\n",
      "56 19\n",
      "56 20\n",
      "56 21\n",
      "56 22\n",
      "56 23\n",
      "56 24\n",
      "56 25\n",
      "56 26\n",
      "56 27\n",
      "56 28\n",
      "56 29\n",
      "56 30\n",
      "56 31\n",
      "56 40\n",
      "56 41\n",
      "56 42\n",
      "56 43\n",
      "56 44\n",
      "56 45\n",
      "56 46\n",
      "56 47\n",
      "56 72\n",
      "56 73\n",
      "56 74\n",
      "56 75\n",
      "56 76\n",
      "56 77\n",
      "56 78\n",
      "56 79\n",
      "56 80\n",
      "56 81\n",
      "56 82\n",
      "56 83\n",
      "56 84\n",
      "56 85\n",
      "56 86\n",
      "56 87\n",
      "56 88\n",
      "56 89\n",
      "56 90\n",
      "56 91\n",
      "56 92\n",
      "56 93\n",
      "56 94\n",
      "56 95\n",
      "56 96\n",
      "56 97\n",
      "56 98\n",
      "56 99\n",
      "57 3\n",
      "57 7\n",
      "57 8\n",
      "57 9\n",
      "57 10\n",
      "57 11\n",
      "57 12\n",
      "57 13\n",
      "57 14\n",
      "57 15\n",
      "57 16\n",
      "57 17\n",
      "57 18\n",
      "57 19\n",
      "57 20\n",
      "57 21\n",
      "57 22\n",
      "57 23\n",
      "57 24\n",
      "57 25\n",
      "57 26\n",
      "57 27\n",
      "57 28\n",
      "57 29\n",
      "57 30\n",
      "57 31\n",
      "57 35\n",
      "57 39\n",
      "57 40\n",
      "57 41\n",
      "57 42\n",
      "57 43\n",
      "57 44\n",
      "57 45\n",
      "57 46\n",
      "57 47\n",
      "57 51\n",
      "57 55\n",
      "57 59\n",
      "57 63\n",
      "57 67\n",
      "57 71\n",
      "57 72\n",
      "57 73\n",
      "57 74\n",
      "57 75\n",
      "57 76\n",
      "57 77\n",
      "57 78\n",
      "57 79\n",
      "57 80\n",
      "57 81\n",
      "57 82\n",
      "57 83\n",
      "57 84\n",
      "57 85\n",
      "57 86\n",
      "57 87\n",
      "57 88\n",
      "57 89\n",
      "57 90\n",
      "57 91\n",
      "57 92\n",
      "57 93\n",
      "57 94\n",
      "57 95\n",
      "57 96\n",
      "57 97\n",
      "57 98\n",
      "57 99\n",
      "58 6\n",
      "58 7\n",
      "58 8\n",
      "58 9\n",
      "58 10\n",
      "58 11\n",
      "58 12\n",
      "58 13\n",
      "58 14\n",
      "58 15\n",
      "58 16\n",
      "58 17\n",
      "58 18\n",
      "58 19\n",
      "58 20\n",
      "58 21\n",
      "58 22\n",
      "58 23\n",
      "58 24\n",
      "58 25\n",
      "58 26\n",
      "58 27\n",
      "58 28\n",
      "58 29\n",
      "58 30\n",
      "58 31\n",
      "58 38\n",
      "58 39\n",
      "58 40\n",
      "58 41\n",
      "58 42\n",
      "58 43\n",
      "58 44\n",
      "58 45\n",
      "58 46\n",
      "58 47\n",
      "58 54\n",
      "58 55\n",
      "58 62\n",
      "58 63\n",
      "58 70\n",
      "58 71\n",
      "58 72\n",
      "58 73\n",
      "58 74\n",
      "58 75\n",
      "58 76\n",
      "58 77\n",
      "58 78\n",
      "58 79\n",
      "58 80\n",
      "58 81\n",
      "58 82\n",
      "58 83\n",
      "58 84\n",
      "58 85\n",
      "58 86\n",
      "58 87\n",
      "58 88\n",
      "58 89\n",
      "58 90\n",
      "58 91\n",
      "58 92\n",
      "58 93\n",
      "58 94\n",
      "58 95\n",
      "58 96\n",
      "58 97\n",
      "58 98\n",
      "58 99\n",
      "59 1\n",
      "59 5\n",
      "59 6\n",
      "59 7\n",
      "59 8\n",
      "59 9\n",
      "59 10\n",
      "59 11\n",
      "59 12\n",
      "59 13\n",
      "59 14\n",
      "59 15\n",
      "59 16\n",
      "59 17\n",
      "59 18\n",
      "59 19\n",
      "59 20\n",
      "59 21\n",
      "59 22\n",
      "59 23\n",
      "59 24\n",
      "59 25\n",
      "59 26\n",
      "59 27\n",
      "59 28\n",
      "59 29\n",
      "59 30\n",
      "59 31\n",
      "59 33\n",
      "59 37\n",
      "59 38\n",
      "59 39\n",
      "59 40\n",
      "59 41\n",
      "59 42\n",
      "59 43\n",
      "59 44\n",
      "59 45\n",
      "59 46\n",
      "59 47\n",
      "59 49\n",
      "59 53\n",
      "59 54\n",
      "59 55\n",
      "59 57\n",
      "59 61\n",
      "59 62\n",
      "59 63\n",
      "59 65\n",
      "59 69\n",
      "59 70\n",
      "59 71\n",
      "59 72\n",
      "59 73\n",
      "59 74\n",
      "59 75\n",
      "59 76\n",
      "59 77\n",
      "59 78\n",
      "59 79\n",
      "59 80\n",
      "59 81\n",
      "59 82\n",
      "59 83\n",
      "59 84\n",
      "59 85\n",
      "59 86\n",
      "59 87\n",
      "59 88\n",
      "59 89\n",
      "59 90\n",
      "59 91\n",
      "59 92\n",
      "59 93\n",
      "59 94\n",
      "59 95\n",
      "59 96\n",
      "59 97\n",
      "59 98\n",
      "59 99\n",
      "60 4\n",
      "60 5\n",
      "60 6\n",
      "60 7\n",
      "60 8\n",
      "60 9\n",
      "60 10\n",
      "60 11\n",
      "60 12\n",
      "60 13\n",
      "60 14\n",
      "60 15\n",
      "60 16\n",
      "60 17\n",
      "60 18\n",
      "60 19\n",
      "60 20\n",
      "60 21\n",
      "60 22\n",
      "60 23\n",
      "60 24\n",
      "60 25\n",
      "60 26\n",
      "60 27\n",
      "60 28\n",
      "60 29\n",
      "60 30\n",
      "60 31\n",
      "60 36\n",
      "60 37\n",
      "60 38\n",
      "60 39\n",
      "60 40\n",
      "60 41\n",
      "60 42\n",
      "60 43\n",
      "60 44\n",
      "60 45\n",
      "60 46\n",
      "60 47\n",
      "60 52\n",
      "60 53\n",
      "60 54\n",
      "60 55\n",
      "60 68\n",
      "60 69\n",
      "60 70\n",
      "60 71\n",
      "60 72\n",
      "60 73\n",
      "60 74\n",
      "60 75\n",
      "60 76\n",
      "60 77\n",
      "60 78\n",
      "60 79\n",
      "60 80\n",
      "60 81\n",
      "60 82\n",
      "60 83\n",
      "60 84\n",
      "60 85\n",
      "60 86\n",
      "60 87\n",
      "60 88\n",
      "60 89\n",
      "60 90\n",
      "60 91\n",
      "60 92\n",
      "60 93\n",
      "60 94\n",
      "60 95\n",
      "60 96\n",
      "60 97\n",
      "60 98\n",
      "60 99\n",
      "61 3\n",
      "61 4\n",
      "61 5\n",
      "61 6\n",
      "61 7\n",
      "61 8\n",
      "61 9\n",
      "61 10\n",
      "61 11\n",
      "61 12\n",
      "61 13\n",
      "61 14\n",
      "61 15\n",
      "61 16\n",
      "61 17\n",
      "61 18\n",
      "61 19\n",
      "61 20\n",
      "61 21\n",
      "61 22\n",
      "61 23\n",
      "61 24\n",
      "61 25\n",
      "61 26\n",
      "61 27\n",
      "61 28\n",
      "61 29\n",
      "61 30\n",
      "61 31\n",
      "61 35\n",
      "61 36\n",
      "61 37\n",
      "61 38\n",
      "61 39\n",
      "61 40\n",
      "61 41\n",
      "61 42\n",
      "61 43\n",
      "61 44\n",
      "61 45\n",
      "61 46\n",
      "61 47\n",
      "61 51\n",
      "61 52\n",
      "61 53\n",
      "61 54\n",
      "61 55\n",
      "61 59\n",
      "61 63\n",
      "61 67\n",
      "61 68\n",
      "61 69\n",
      "61 70\n",
      "61 71\n",
      "61 72\n",
      "61 73\n",
      "61 74\n",
      "61 75\n",
      "61 76\n",
      "61 77\n",
      "61 78\n",
      "61 79\n",
      "61 80\n",
      "61 81\n",
      "61 82\n",
      "61 83\n",
      "61 84\n",
      "61 85\n",
      "61 86\n",
      "61 87\n",
      "61 88\n",
      "61 89\n",
      "61 90\n",
      "61 91\n",
      "61 92\n",
      "61 93\n",
      "61 94\n",
      "61 95\n",
      "61 96\n",
      "61 97\n",
      "61 98\n",
      "61 99\n",
      "62 2\n",
      "62 3\n",
      "62 4\n",
      "62 5\n",
      "62 6\n",
      "62 7\n",
      "62 8\n",
      "62 9\n",
      "62 10\n",
      "62 11\n",
      "62 12\n",
      "62 13\n",
      "62 14\n",
      "62 15\n",
      "62 16\n",
      "62 17\n",
      "62 18\n",
      "62 19\n",
      "62 20\n",
      "62 21\n",
      "62 22\n",
      "62 23\n",
      "62 24\n",
      "62 25\n",
      "62 26\n",
      "62 27\n",
      "62 28\n",
      "62 29\n",
      "62 30\n",
      "62 31\n",
      "62 34\n",
      "62 35\n",
      "62 36\n",
      "62 37\n",
      "62 38\n",
      "62 39\n",
      "62 40\n",
      "62 41\n",
      "62 42\n",
      "62 43\n",
      "62 44\n",
      "62 45\n",
      "62 46\n",
      "62 47\n",
      "62 50\n",
      "62 51\n",
      "62 52\n",
      "62 53\n",
      "62 54\n",
      "62 55\n",
      "62 58\n",
      "62 59\n",
      "62 66\n",
      "62 67\n",
      "62 68\n",
      "62 69\n",
      "62 70\n",
      "62 71\n",
      "62 72\n",
      "62 73\n",
      "62 74\n",
      "62 75\n",
      "62 76\n",
      "62 77\n",
      "62 78\n",
      "62 79\n",
      "62 80\n",
      "62 81\n",
      "62 82\n",
      "62 83\n",
      "62 84\n",
      "62 85\n",
      "62 86\n",
      "62 87\n",
      "62 88\n",
      "62 89\n",
      "62 90\n",
      "62 91\n",
      "62 92\n",
      "62 93\n",
      "62 94\n",
      "62 95\n",
      "62 96\n",
      "62 97\n",
      "62 98\n",
      "62 99\n",
      "63 1\n",
      "63 2\n",
      "63 3\n",
      "63 4\n",
      "63 5\n",
      "63 6\n",
      "63 7\n",
      "63 8\n",
      "63 9\n",
      "63 10\n",
      "63 11\n",
      "63 12\n",
      "63 13\n",
      "63 14\n",
      "63 15\n",
      "63 16\n",
      "63 17\n",
      "63 18\n",
      "63 19\n",
      "63 20\n",
      "63 21\n",
      "63 22\n",
      "63 23\n",
      "63 24\n",
      "63 25\n",
      "63 26\n",
      "63 27\n",
      "63 28\n",
      "63 29\n",
      "63 30\n",
      "63 31\n",
      "63 33\n",
      "63 34\n",
      "63 35\n",
      "63 36\n",
      "63 37\n",
      "63 38\n",
      "63 39\n",
      "63 40\n",
      "63 41\n",
      "63 42\n",
      "63 43\n",
      "63 44\n",
      "63 45\n",
      "63 46\n",
      "63 47\n",
      "63 49\n",
      "63 50\n",
      "63 51\n",
      "63 52\n",
      "63 53\n",
      "63 54\n",
      "63 55\n",
      "63 57\n",
      "63 58\n",
      "63 59\n",
      "63 61\n",
      "63 65\n",
      "63 66\n",
      "63 67\n",
      "63 68\n",
      "63 69\n",
      "63 70\n",
      "63 71\n",
      "63 72\n",
      "63 73\n",
      "63 74\n",
      "63 75\n",
      "63 76\n",
      "63 77\n",
      "63 78\n",
      "63 79\n",
      "63 80\n",
      "63 81\n",
      "63 82\n",
      "63 83\n",
      "63 84\n",
      "63 85\n",
      "63 86\n",
      "63 87\n",
      "63 88\n",
      "63 89\n",
      "63 90\n",
      "63 91\n",
      "63 92\n",
      "63 93\n",
      "63 94\n",
      "63 95\n",
      "63 96\n",
      "63 97\n",
      "63 98\n",
      "63 99\n",
      "65 3\n",
      "65 7\n",
      "65 11\n",
      "65 15\n",
      "65 19\n",
      "65 23\n",
      "65 27\n",
      "65 31\n",
      "65 35\n",
      "65 39\n",
      "65 43\n",
      "65 47\n",
      "65 51\n",
      "65 55\n",
      "65 59\n",
      "65 63\n",
      "65 67\n",
      "65 71\n",
      "65 75\n",
      "65 79\n",
      "65 83\n",
      "65 87\n",
      "65 91\n",
      "65 95\n",
      "65 99\n",
      "66 6\n",
      "66 7\n",
      "66 14\n",
      "66 15\n",
      "66 22\n",
      "66 23\n",
      "66 30\n",
      "66 31\n",
      "66 38\n",
      "66 39\n",
      "66 46\n",
      "66 47\n",
      "66 54\n",
      "66 55\n",
      "66 62\n",
      "66 63\n",
      "66 70\n",
      "66 71\n",
      "66 78\n",
      "66 79\n",
      "66 86\n",
      "66 87\n",
      "66 94\n",
      "66 95\n",
      "67 1\n",
      "67 5\n",
      "67 6\n",
      "67 7\n",
      "67 9\n",
      "67 13\n",
      "67 14\n",
      "67 15\n",
      "67 17\n",
      "67 21\n",
      "67 22\n",
      "67 23\n",
      "67 25\n",
      "67 29\n",
      "67 30\n",
      "67 31\n",
      "67 33\n",
      "67 37\n",
      "67 38\n",
      "67 39\n",
      "67 41\n",
      "67 45\n",
      "67 46\n",
      "67 47\n",
      "67 49\n",
      "67 53\n",
      "67 54\n",
      "67 55\n",
      "67 57\n",
      "67 61\n",
      "67 62\n",
      "67 63\n",
      "67 65\n",
      "67 69\n",
      "67 70\n",
      "67 71\n",
      "67 73\n",
      "67 77\n",
      "67 78\n",
      "67 79\n",
      "67 81\n",
      "67 85\n",
      "67 86\n",
      "67 87\n",
      "67 89\n",
      "67 93\n",
      "67 94\n",
      "67 95\n",
      "67 97\n",
      "68 12\n",
      "68 13\n",
      "68 14\n",
      "68 15\n",
      "68 28\n",
      "68 29\n",
      "68 30\n",
      "68 31\n",
      "68 44\n",
      "68 45\n",
      "68 46\n",
      "68 47\n",
      "68 60\n",
      "68 61\n",
      "68 62\n",
      "68 63\n",
      "68 76\n",
      "68 77\n",
      "68 78\n",
      "68 79\n",
      "68 92\n",
      "68 93\n",
      "68 94\n",
      "68 95\n",
      "69 3\n",
      "69 7\n",
      "69 11\n",
      "69 12\n",
      "69 13\n",
      "69 14\n",
      "69 15\n",
      "69 19\n",
      "69 23\n",
      "69 27\n",
      "69 28\n",
      "69 29\n",
      "69 30\n",
      "69 31\n",
      "69 35\n",
      "69 39\n",
      "69 43\n",
      "69 44\n",
      "69 45\n",
      "69 46\n",
      "69 47\n",
      "69 51\n",
      "69 55\n",
      "69 59\n",
      "69 60\n",
      "69 61\n",
      "69 62\n",
      "69 63\n",
      "69 67\n",
      "69 71\n",
      "69 75\n",
      "69 76\n",
      "69 77\n",
      "69 78\n",
      "69 79\n",
      "69 83\n",
      "69 87\n",
      "69 91\n",
      "69 92\n",
      "69 93\n",
      "69 94\n",
      "69 95\n",
      "69 99\n",
      "70 2\n",
      "70 3\n",
      "70 10\n",
      "70 11\n",
      "70 12\n",
      "70 13\n",
      "70 14\n",
      "70 15\n",
      "70 18\n",
      "70 19\n",
      "70 26\n",
      "70 27\n",
      "70 28\n",
      "70 29\n",
      "70 30\n",
      "70 31\n",
      "70 34\n",
      "70 35\n",
      "70 42\n",
      "70 43\n",
      "70 44\n",
      "70 45\n",
      "70 46\n",
      "70 47\n",
      "70 50\n",
      "70 51\n",
      "70 58\n",
      "70 59\n",
      "70 60\n",
      "70 61\n",
      "70 62\n",
      "70 63\n",
      "70 66\n",
      "70 67\n",
      "70 74\n",
      "70 75\n",
      "70 76\n",
      "70 77\n",
      "70 78\n",
      "70 79\n",
      "70 82\n",
      "70 83\n",
      "70 90\n",
      "70 91\n",
      "70 92\n",
      "70 93\n",
      "70 94\n",
      "70 95\n",
      "70 98\n",
      "70 99\n",
      "71 1\n",
      "71 2\n",
      "71 3\n",
      "71 5\n",
      "71 9\n",
      "71 10\n",
      "71 11\n",
      "71 12\n",
      "71 13\n",
      "71 14\n",
      "71 15\n",
      "71 17\n",
      "71 18\n",
      "71 19\n",
      "71 21\n",
      "71 25\n",
      "71 26\n",
      "71 27\n",
      "71 28\n",
      "71 29\n",
      "71 30\n",
      "71 31\n",
      "71 33\n",
      "71 34\n",
      "71 35\n",
      "71 37\n",
      "71 41\n",
      "71 42\n",
      "71 43\n",
      "71 44\n",
      "71 45\n",
      "71 46\n",
      "71 47\n",
      "71 49\n",
      "71 50\n",
      "71 51\n",
      "71 53\n",
      "71 57\n",
      "71 58\n",
      "71 59\n",
      "71 60\n",
      "71 61\n",
      "71 62\n",
      "71 63\n",
      "71 65\n",
      "71 66\n",
      "71 67\n",
      "71 69\n",
      "71 73\n",
      "71 74\n",
      "71 75\n",
      "71 76\n",
      "71 77\n",
      "71 78\n",
      "71 79\n",
      "71 81\n",
      "71 82\n",
      "71 83\n",
      "71 85\n",
      "71 89\n",
      "71 90\n",
      "71 91\n",
      "71 92\n",
      "71 93\n",
      "71 94\n",
      "71 95\n",
      "71 97\n",
      "71 98\n",
      "71 99\n",
      "72 24\n",
      "72 25\n",
      "72 26\n",
      "72 27\n",
      "72 28\n",
      "72 29\n",
      "72 30\n",
      "72 31\n",
      "72 56\n",
      "72 57\n",
      "72 58\n",
      "72 59\n",
      "72 60\n",
      "72 61\n",
      "72 62\n",
      "72 63\n",
      "72 88\n",
      "72 89\n",
      "72 90\n",
      "72 91\n",
      "72 92\n",
      "72 93\n",
      "72 94\n",
      "72 95\n",
      "73 3\n",
      "73 7\n",
      "73 11\n",
      "73 15\n",
      "73 19\n",
      "73 23\n",
      "73 24\n",
      "73 25\n",
      "73 26\n",
      "73 27\n",
      "73 28\n",
      "73 29\n",
      "73 30\n",
      "73 31\n",
      "73 35\n",
      "73 39\n",
      "73 43\n",
      "73 47\n",
      "73 51\n",
      "73 55\n",
      "73 56\n",
      "73 57\n",
      "73 58\n",
      "73 59\n",
      "73 60\n",
      "73 61\n",
      "73 62\n",
      "73 63\n",
      "73 67\n",
      "73 71\n",
      "73 75\n",
      "73 79\n",
      "73 83\n",
      "73 87\n",
      "73 88\n",
      "73 89\n",
      "73 90\n",
      "73 91\n",
      "73 92\n",
      "73 93\n",
      "73 94\n",
      "73 95\n",
      "73 99\n",
      "74 6\n",
      "74 7\n",
      "74 14\n",
      "74 15\n",
      "74 22\n",
      "74 23\n",
      "74 24\n",
      "74 25\n",
      "74 26\n",
      "74 27\n",
      "74 28\n",
      "74 29\n",
      "74 30\n",
      "74 31\n",
      "74 38\n",
      "74 39\n",
      "74 46\n",
      "74 47\n",
      "74 54\n",
      "74 55\n",
      "74 56\n",
      "74 57\n",
      "74 58\n",
      "74 59\n",
      "74 60\n",
      "74 61\n",
      "74 62\n",
      "74 63\n",
      "74 70\n",
      "74 71\n",
      "74 78\n",
      "74 79\n",
      "74 86\n",
      "74 87\n",
      "74 88\n",
      "74 89\n",
      "74 90\n",
      "74 91\n",
      "74 92\n",
      "74 93\n",
      "74 94\n",
      "74 95\n",
      "75 1\n",
      "75 5\n",
      "75 6\n",
      "75 7\n",
      "75 9\n",
      "75 13\n",
      "75 14\n",
      "75 15\n",
      "75 17\n",
      "75 21\n",
      "75 22\n",
      "75 23\n",
      "75 24\n",
      "75 25\n",
      "75 26\n",
      "75 27\n",
      "75 28\n",
      "75 29\n",
      "75 30\n",
      "75 31\n",
      "75 33\n",
      "75 37\n",
      "75 38\n",
      "75 39\n",
      "75 41\n",
      "75 45\n",
      "75 46\n",
      "75 47\n",
      "75 49\n",
      "75 53\n",
      "75 54\n",
      "75 55\n",
      "75 56\n",
      "75 57\n",
      "75 58\n",
      "75 59\n",
      "75 60\n",
      "75 61\n",
      "75 62\n",
      "75 63\n",
      "75 65\n",
      "75 69\n",
      "75 70\n",
      "75 71\n",
      "75 73\n",
      "75 77\n",
      "75 78\n",
      "75 79\n",
      "75 81\n",
      "75 85\n",
      "75 86\n",
      "75 87\n",
      "75 88\n",
      "75 89\n",
      "75 90\n",
      "75 91\n",
      "75 92\n",
      "75 93\n",
      "75 94\n",
      "75 95\n",
      "75 97\n",
      "76 4\n",
      "76 5\n",
      "76 6\n",
      "76 7\n",
      "76 20\n",
      "76 21\n",
      "76 22\n",
      "76 23\n",
      "76 24\n",
      "76 25\n",
      "76 26\n",
      "76 27\n",
      "76 28\n",
      "76 29\n",
      "76 30\n",
      "76 31\n",
      "76 36\n",
      "76 37\n",
      "76 38\n",
      "76 39\n",
      "76 52\n",
      "76 53\n",
      "76 54\n",
      "76 55\n",
      "76 56\n",
      "76 57\n",
      "76 58\n",
      "76 59\n",
      "76 60\n",
      "76 61\n",
      "76 62\n",
      "76 63\n",
      "76 68\n",
      "76 69\n",
      "76 70\n",
      "76 71\n",
      "76 84\n",
      "76 85\n",
      "76 86\n",
      "76 87\n",
      "76 88\n",
      "76 89\n",
      "76 90\n",
      "76 91\n",
      "76 92\n",
      "76 93\n",
      "76 94\n",
      "76 95\n",
      "77 3\n",
      "77 4\n",
      "77 5\n",
      "77 6\n",
      "77 7\n",
      "77 11\n",
      "77 15\n",
      "77 19\n",
      "77 20\n",
      "77 21\n",
      "77 22\n",
      "77 23\n",
      "77 24\n",
      "77 25\n",
      "77 26\n",
      "77 27\n",
      "77 28\n",
      "77 29\n",
      "77 30\n",
      "77 31\n",
      "77 35\n",
      "77 36\n",
      "77 37\n",
      "77 38\n",
      "77 39\n",
      "77 43\n",
      "77 47\n",
      "77 51\n",
      "77 52\n",
      "77 53\n",
      "77 54\n",
      "77 55\n",
      "77 56\n",
      "77 57\n",
      "77 58\n",
      "77 59\n",
      "77 60\n",
      "77 61\n",
      "77 62\n",
      "77 63\n",
      "77 67\n",
      "77 68\n",
      "77 69\n",
      "77 70\n",
      "77 71\n",
      "77 75\n",
      "77 79\n",
      "77 83\n",
      "77 84\n",
      "77 85\n",
      "77 86\n",
      "77 87\n",
      "77 88\n",
      "77 89\n",
      "77 90\n",
      "77 91\n",
      "77 92\n",
      "77 93\n",
      "77 94\n",
      "77 95\n",
      "77 99\n",
      "78 2\n",
      "78 3\n",
      "78 4\n",
      "78 5\n",
      "78 6\n",
      "78 7\n",
      "78 10\n",
      "78 11\n",
      "78 18\n",
      "78 19\n",
      "78 20\n",
      "78 21\n",
      "78 22\n",
      "78 23\n",
      "78 24\n",
      "78 25\n",
      "78 26\n",
      "78 27\n",
      "78 28\n",
      "78 29\n",
      "78 30\n",
      "78 31\n",
      "78 34\n",
      "78 35\n",
      "78 36\n",
      "78 37\n",
      "78 38\n",
      "78 39\n",
      "78 42\n",
      "78 43\n",
      "78 50\n",
      "78 51\n",
      "78 52\n",
      "78 53\n",
      "78 54\n",
      "78 55\n",
      "78 56\n",
      "78 57\n",
      "78 58\n",
      "78 59\n",
      "78 60\n",
      "78 61\n",
      "78 62\n",
      "78 63\n",
      "78 66\n",
      "78 67\n",
      "78 68\n",
      "78 69\n",
      "78 70\n",
      "78 71\n",
      "78 74\n",
      "78 75\n",
      "78 82\n",
      "78 83\n",
      "78 84\n",
      "78 85\n",
      "78 86\n",
      "78 87\n",
      "78 88\n",
      "78 89\n",
      "78 90\n",
      "78 91\n",
      "78 92\n",
      "78 93\n",
      "78 94\n",
      "78 95\n",
      "78 98\n",
      "78 99\n",
      "79 1\n",
      "79 2\n",
      "79 3\n",
      "79 4\n",
      "79 5\n",
      "79 6\n",
      "79 7\n",
      "79 9\n",
      "79 10\n",
      "79 11\n",
      "79 13\n",
      "79 17\n",
      "79 18\n",
      "79 19\n",
      "79 20\n",
      "79 21\n",
      "79 22\n",
      "79 23\n",
      "79 24\n",
      "79 25\n",
      "79 26\n",
      "79 27\n",
      "79 28\n",
      "79 29\n",
      "79 30\n",
      "79 31\n",
      "79 33\n",
      "79 34\n",
      "79 35\n",
      "79 36\n",
      "79 37\n",
      "79 38\n",
      "79 39\n",
      "79 41\n",
      "79 42\n",
      "79 43\n",
      "79 45\n",
      "79 49\n",
      "79 50\n",
      "79 51\n",
      "79 52\n",
      "79 53\n",
      "79 54\n",
      "79 55\n",
      "79 56\n",
      "79 57\n",
      "79 58\n",
      "79 59\n",
      "79 60\n",
      "79 61\n",
      "79 62\n",
      "79 63\n",
      "79 65\n",
      "79 66\n",
      "79 67\n",
      "79 68\n",
      "79 69\n",
      "79 70\n",
      "79 71\n",
      "79 73\n",
      "79 74\n",
      "79 75\n",
      "79 77\n",
      "79 81\n",
      "79 82\n",
      "79 83\n",
      "79 84\n",
      "79 85\n",
      "79 86\n",
      "79 87\n",
      "79 88\n",
      "79 89\n",
      "79 90\n",
      "79 91\n",
      "79 92\n",
      "79 93\n",
      "79 94\n",
      "79 95\n",
      "79 97\n",
      "79 98\n",
      "79 99\n",
      "80 48\n",
      "80 49\n",
      "80 50\n",
      "80 51\n",
      "80 52\n",
      "80 53\n",
      "80 54\n",
      "80 55\n",
      "80 56\n",
      "80 57\n",
      "80 58\n",
      "80 59\n",
      "80 60\n",
      "80 61\n",
      "80 62\n",
      "80 63\n",
      "81 3\n",
      "81 7\n",
      "81 11\n",
      "81 15\n",
      "81 19\n",
      "81 23\n",
      "81 27\n",
      "81 31\n",
      "81 35\n",
      "81 39\n",
      "81 43\n",
      "81 47\n",
      "81 48\n",
      "81 49\n",
      "81 50\n",
      "81 51\n",
      "81 52\n",
      "81 53\n",
      "81 54\n",
      "81 55\n",
      "81 56\n",
      "81 57\n",
      "81 58\n",
      "81 59\n",
      "81 60\n",
      "81 61\n",
      "81 62\n",
      "81 63\n",
      "81 67\n",
      "81 71\n",
      "81 75\n",
      "81 79\n",
      "81 83\n",
      "81 87\n",
      "81 91\n",
      "81 95\n",
      "81 99\n",
      "82 6\n",
      "82 7\n",
      "82 14\n",
      "82 15\n",
      "82 22\n",
      "82 23\n",
      "82 30\n",
      "82 31\n",
      "82 38\n",
      "82 39\n",
      "82 46\n",
      "82 47\n",
      "82 48\n",
      "82 49\n",
      "82 50\n",
      "82 51\n",
      "82 52\n",
      "82 53\n",
      "82 54\n",
      "82 55\n",
      "82 56\n",
      "82 57\n",
      "82 58\n",
      "82 59\n",
      "82 60\n",
      "82 61\n",
      "82 62\n",
      "82 63\n",
      "82 70\n",
      "82 71\n",
      "82 78\n",
      "82 79\n",
      "82 86\n",
      "82 87\n",
      "82 94\n",
      "82 95\n",
      "83 1\n",
      "83 5\n",
      "83 6\n",
      "83 7\n",
      "83 9\n",
      "83 13\n",
      "83 14\n",
      "83 15\n",
      "83 17\n",
      "83 21\n",
      "83 22\n",
      "83 23\n",
      "83 25\n",
      "83 29\n",
      "83 30\n",
      "83 31\n",
      "83 33\n",
      "83 37\n",
      "83 38\n",
      "83 39\n",
      "83 41\n",
      "83 45\n",
      "83 46\n",
      "83 47\n",
      "83 48\n",
      "83 49\n",
      "83 50\n",
      "83 51\n",
      "83 52\n",
      "83 53\n",
      "83 54\n",
      "83 55\n",
      "83 56\n",
      "83 57\n",
      "83 58\n",
      "83 59\n",
      "83 60\n",
      "83 61\n",
      "83 62\n",
      "83 63\n",
      "83 65\n",
      "83 69\n",
      "83 70\n",
      "83 71\n",
      "83 73\n",
      "83 77\n",
      "83 78\n",
      "83 79\n",
      "83 81\n",
      "83 85\n",
      "83 86\n",
      "83 87\n",
      "83 89\n",
      "83 93\n",
      "83 94\n",
      "83 95\n",
      "83 97\n",
      "84 12\n",
      "84 13\n",
      "84 14\n",
      "84 15\n",
      "84 28\n",
      "84 29\n",
      "84 30\n",
      "84 31\n",
      "84 44\n",
      "84 45\n",
      "84 46\n",
      "84 47\n",
      "84 48\n",
      "84 49\n",
      "84 50\n",
      "84 51\n",
      "84 52\n",
      "84 53\n",
      "84 54\n",
      "84 55\n",
      "84 56\n",
      "84 57\n",
      "84 58\n",
      "84 59\n",
      "84 60\n",
      "84 61\n",
      "84 62\n",
      "84 63\n",
      "84 76\n",
      "84 77\n",
      "84 78\n",
      "84 79\n",
      "84 92\n",
      "84 93\n",
      "84 94\n",
      "84 95\n",
      "85 3\n",
      "85 7\n",
      "85 11\n",
      "85 12\n",
      "85 13\n",
      "85 14\n",
      "85 15\n",
      "85 19\n",
      "85 23\n",
      "85 27\n",
      "85 28\n",
      "85 29\n",
      "85 30\n",
      "85 31\n",
      "85 35\n",
      "85 39\n",
      "85 43\n",
      "85 44\n",
      "85 45\n",
      "85 46\n",
      "85 47\n",
      "85 48\n",
      "85 49\n",
      "85 50\n",
      "85 51\n",
      "85 52\n",
      "85 53\n",
      "85 54\n",
      "85 55\n",
      "85 56\n",
      "85 57\n",
      "85 58\n",
      "85 59\n",
      "85 60\n",
      "85 61\n",
      "85 62\n",
      "85 63\n",
      "85 67\n",
      "85 71\n",
      "85 75\n",
      "85 76\n",
      "85 77\n",
      "85 78\n",
      "85 79\n",
      "85 83\n",
      "85 87\n",
      "85 91\n",
      "85 92\n",
      "85 93\n",
      "85 94\n",
      "85 95\n",
      "85 99\n",
      "86 2\n",
      "86 3\n",
      "86 10\n",
      "86 11\n",
      "86 12\n",
      "86 13\n",
      "86 14\n",
      "86 15\n",
      "86 18\n",
      "86 19\n",
      "86 26\n",
      "86 27\n",
      "86 28\n",
      "86 29\n",
      "86 30\n",
      "86 31\n",
      "86 34\n",
      "86 35\n",
      "86 42\n",
      "86 43\n",
      "86 44\n",
      "86 45\n",
      "86 46\n",
      "86 47\n",
      "86 48\n",
      "86 49\n",
      "86 50\n",
      "86 51\n",
      "86 52\n",
      "86 53\n",
      "86 54\n",
      "86 55\n",
      "86 56\n",
      "86 57\n",
      "86 58\n",
      "86 59\n",
      "86 60\n",
      "86 61\n",
      "86 62\n",
      "86 63\n",
      "86 66\n",
      "86 67\n",
      "86 74\n",
      "86 75\n",
      "86 76\n",
      "86 77\n",
      "86 78\n",
      "86 79\n",
      "86 82\n",
      "86 83\n",
      "86 90\n",
      "86 91\n",
      "86 92\n",
      "86 93\n",
      "86 94\n",
      "86 95\n",
      "86 98\n",
      "86 99\n",
      "87 1\n",
      "87 2\n",
      "87 3\n",
      "87 5\n",
      "87 9\n",
      "87 10\n",
      "87 11\n",
      "87 12\n",
      "87 13\n",
      "87 14\n",
      "87 15\n",
      "87 17\n",
      "87 18\n",
      "87 19\n",
      "87 21\n",
      "87 25\n",
      "87 26\n",
      "87 27\n",
      "87 28\n",
      "87 29\n",
      "87 30\n",
      "87 31\n",
      "87 33\n",
      "87 34\n",
      "87 35\n",
      "87 37\n",
      "87 41\n",
      "87 42\n",
      "87 43\n",
      "87 44\n",
      "87 45\n",
      "87 46\n",
      "87 47\n",
      "87 48\n",
      "87 49\n",
      "87 50\n",
      "87 51\n",
      "87 52\n",
      "87 53\n",
      "87 54\n",
      "87 55\n",
      "87 56\n",
      "87 57\n",
      "87 58\n",
      "87 59\n",
      "87 60\n",
      "87 61\n",
      "87 62\n",
      "87 63\n",
      "87 65\n",
      "87 66\n",
      "87 67\n",
      "87 69\n",
      "87 73\n",
      "87 74\n",
      "87 75\n",
      "87 76\n",
      "87 77\n",
      "87 78\n",
      "87 79\n",
      "87 81\n",
      "87 82\n",
      "87 83\n",
      "87 85\n",
      "87 89\n",
      "87 90\n",
      "87 91\n",
      "87 92\n",
      "87 93\n",
      "87 94\n",
      "87 95\n",
      "87 97\n",
      "87 98\n",
      "87 99\n",
      "88 8\n",
      "88 9\n",
      "88 10\n",
      "88 11\n",
      "88 12\n",
      "88 13\n",
      "88 14\n",
      "88 15\n",
      "88 40\n",
      "88 41\n",
      "88 42\n",
      "88 43\n",
      "88 44\n",
      "88 45\n",
      "88 46\n",
      "88 47\n",
      "88 48\n",
      "88 49\n",
      "88 50\n",
      "88 51\n",
      "88 52\n",
      "88 53\n",
      "88 54\n",
      "88 55\n",
      "88 56\n",
      "88 57\n",
      "88 58\n",
      "88 59\n",
      "88 60\n",
      "88 61\n",
      "88 62\n",
      "88 63\n",
      "88 72\n",
      "88 73\n",
      "88 74\n",
      "88 75\n",
      "88 76\n",
      "88 77\n",
      "88 78\n",
      "88 79\n",
      "89 3\n",
      "89 7\n",
      "89 8\n",
      "89 9\n",
      "89 10\n",
      "89 11\n",
      "89 12\n",
      "89 13\n",
      "89 14\n",
      "89 15\n",
      "89 19\n",
      "89 23\n",
      "89 27\n",
      "89 31\n",
      "89 35\n",
      "89 39\n",
      "89 40\n",
      "89 41\n",
      "89 42\n",
      "89 43\n",
      "89 44\n",
      "89 45\n",
      "89 46\n",
      "89 47\n",
      "89 48\n",
      "89 49\n",
      "89 50\n",
      "89 51\n",
      "89 52\n",
      "89 53\n",
      "89 54\n",
      "89 55\n",
      "89 56\n",
      "89 57\n",
      "89 58\n",
      "89 59\n",
      "89 60\n",
      "89 61\n",
      "89 62\n",
      "89 63\n",
      "89 67\n",
      "89 71\n",
      "89 72\n",
      "89 73\n",
      "89 74\n",
      "89 75\n",
      "89 76\n",
      "89 77\n",
      "89 78\n",
      "89 79\n",
      "89 83\n",
      "89 87\n",
      "89 91\n",
      "89 95\n",
      "89 99\n",
      "90 6\n",
      "90 7\n",
      "90 8\n",
      "90 9\n",
      "90 10\n",
      "90 11\n",
      "90 12\n",
      "90 13\n",
      "90 14\n",
      "90 15\n",
      "90 22\n",
      "90 23\n",
      "90 30\n",
      "90 31\n",
      "90 38\n",
      "90 39\n",
      "90 40\n",
      "90 41\n",
      "90 42\n",
      "90 43\n",
      "90 44\n",
      "90 45\n",
      "90 46\n",
      "90 47\n",
      "90 48\n",
      "90 49\n",
      "90 50\n",
      "90 51\n",
      "90 52\n",
      "90 53\n",
      "90 54\n",
      "90 55\n",
      "90 56\n",
      "90 57\n",
      "90 58\n",
      "90 59\n",
      "90 60\n",
      "90 61\n",
      "90 62\n",
      "90 63\n",
      "90 70\n",
      "90 71\n",
      "90 72\n",
      "90 73\n",
      "90 74\n",
      "90 75\n",
      "90 76\n",
      "90 77\n",
      "90 78\n",
      "90 79\n",
      "90 86\n",
      "90 87\n",
      "90 94\n",
      "90 95\n",
      "91 1\n",
      "91 5\n",
      "91 6\n",
      "91 7\n",
      "91 8\n",
      "91 9\n",
      "91 10\n",
      "91 11\n",
      "91 12\n",
      "91 13\n",
      "91 14\n",
      "91 15\n",
      "91 17\n",
      "91 21\n",
      "91 22\n",
      "91 23\n",
      "91 25\n",
      "91 29\n",
      "91 30\n",
      "91 31\n",
      "91 33\n",
      "91 37\n",
      "91 38\n",
      "91 39\n",
      "91 40\n",
      "91 41\n",
      "91 42\n",
      "91 43\n",
      "91 44\n",
      "91 45\n",
      "91 46\n",
      "91 47\n",
      "91 48\n",
      "91 49\n",
      "91 50\n",
      "91 51\n",
      "91 52\n",
      "91 53\n",
      "91 54\n",
      "91 55\n",
      "91 56\n",
      "91 57\n",
      "91 58\n",
      "91 59\n",
      "91 60\n",
      "91 61\n",
      "91 62\n",
      "91 63\n",
      "91 65\n",
      "91 69\n",
      "91 70\n",
      "91 71\n",
      "91 72\n",
      "91 73\n",
      "91 74\n",
      "91 75\n",
      "91 76\n",
      "91 77\n",
      "91 78\n",
      "91 79\n",
      "91 81\n",
      "91 85\n",
      "91 86\n",
      "91 87\n",
      "91 89\n",
      "91 93\n",
      "91 94\n",
      "91 95\n",
      "91 97\n",
      "92 4\n",
      "92 5\n",
      "92 6\n",
      "92 7\n",
      "92 8\n",
      "92 9\n",
      "92 10\n",
      "92 11\n",
      "92 12\n",
      "92 13\n",
      "92 14\n",
      "92 15\n",
      "92 20\n",
      "92 21\n",
      "92 22\n",
      "92 23\n",
      "92 36\n",
      "92 37\n",
      "92 38\n",
      "92 39\n",
      "92 40\n",
      "92 41\n",
      "92 42\n",
      "92 43\n",
      "92 44\n",
      "92 45\n",
      "92 46\n",
      "92 47\n",
      "92 48\n",
      "92 49\n",
      "92 50\n",
      "92 51\n",
      "92 52\n",
      "92 53\n",
      "92 54\n",
      "92 55\n",
      "92 56\n",
      "92 57\n",
      "92 58\n",
      "92 59\n",
      "92 60\n",
      "92 61\n",
      "92 62\n",
      "92 63\n",
      "92 68\n",
      "92 69\n",
      "92 70\n",
      "92 71\n",
      "92 72\n",
      "92 73\n",
      "92 74\n",
      "92 75\n",
      "92 76\n",
      "92 77\n",
      "92 78\n",
      "92 79\n",
      "92 84\n",
      "92 85\n",
      "92 86\n",
      "92 87\n",
      "93 3\n",
      "93 4\n",
      "93 5\n",
      "93 6\n",
      "93 7\n",
      "93 8\n",
      "93 9\n",
      "93 10\n",
      "93 11\n",
      "93 12\n",
      "93 13\n",
      "93 14\n",
      "93 15\n",
      "93 19\n",
      "93 20\n",
      "93 21\n",
      "93 22\n",
      "93 23\n",
      "93 27\n",
      "93 31\n",
      "93 35\n",
      "93 36\n",
      "93 37\n",
      "93 38\n",
      "93 39\n",
      "93 40\n",
      "93 41\n",
      "93 42\n",
      "93 43\n",
      "93 44\n",
      "93 45\n",
      "93 46\n",
      "93 47\n",
      "93 48\n",
      "93 49\n",
      "93 50\n",
      "93 51\n",
      "93 52\n",
      "93 53\n",
      "93 54\n",
      "93 55\n",
      "93 56\n",
      "93 57\n",
      "93 58\n",
      "93 59\n",
      "93 60\n",
      "93 61\n",
      "93 62\n",
      "93 63\n",
      "93 67\n",
      "93 68\n",
      "93 69\n",
      "93 70\n",
      "93 71\n",
      "93 72\n",
      "93 73\n",
      "93 74\n",
      "93 75\n",
      "93 76\n",
      "93 77\n",
      "93 78\n",
      "93 79\n",
      "93 83\n",
      "93 84\n",
      "93 85\n",
      "93 86\n",
      "93 87\n",
      "93 91\n",
      "93 95\n",
      "93 99\n",
      "94 2\n",
      "94 3\n",
      "94 4\n",
      "94 5\n",
      "94 6\n",
      "94 7\n",
      "94 8\n",
      "94 9\n",
      "94 10\n",
      "94 11\n",
      "94 12\n",
      "94 13\n",
      "94 14\n",
      "94 15\n",
      "94 18\n",
      "94 19\n",
      "94 20\n",
      "94 21\n",
      "94 22\n",
      "94 23\n",
      "94 26\n",
      "94 27\n",
      "94 34\n",
      "94 35\n",
      "94 36\n",
      "94 37\n",
      "94 38\n",
      "94 39\n",
      "94 40\n",
      "94 41\n",
      "94 42\n",
      "94 43\n",
      "94 44\n",
      "94 45\n",
      "94 46\n",
      "94 47\n",
      "94 48\n",
      "94 49\n",
      "94 50\n",
      "94 51\n",
      "94 52\n",
      "94 53\n",
      "94 54\n",
      "94 55\n",
      "94 56\n",
      "94 57\n",
      "94 58\n",
      "94 59\n",
      "94 60\n",
      "94 61\n",
      "94 62\n",
      "94 63\n",
      "94 66\n",
      "94 67\n",
      "94 68\n",
      "94 69\n",
      "94 70\n",
      "94 71\n",
      "94 72\n",
      "94 73\n",
      "94 74\n",
      "94 75\n",
      "94 76\n",
      "94 77\n",
      "94 78\n",
      "94 79\n",
      "94 82\n",
      "94 83\n",
      "94 84\n",
      "94 85\n",
      "94 86\n",
      "94 87\n",
      "94 90\n",
      "94 91\n",
      "94 98\n",
      "94 99\n",
      "95 1\n",
      "95 2\n",
      "95 3\n",
      "95 4\n",
      "95 5\n",
      "95 6\n",
      "95 7\n",
      "95 8\n",
      "95 9\n",
      "95 10\n",
      "95 11\n",
      "95 12\n",
      "95 13\n",
      "95 14\n",
      "95 15\n",
      "95 17\n",
      "95 18\n",
      "95 19\n",
      "95 20\n",
      "95 21\n",
      "95 22\n",
      "95 23\n",
      "95 25\n",
      "95 26\n",
      "95 27\n",
      "95 29\n",
      "95 33\n",
      "95 34\n",
      "95 35\n",
      "95 36\n",
      "95 37\n",
      "95 38\n",
      "95 39\n",
      "95 40\n",
      "95 41\n",
      "95 42\n",
      "95 43\n",
      "95 44\n",
      "95 45\n",
      "95 46\n",
      "95 47\n",
      "95 48\n",
      "95 49\n",
      "95 50\n",
      "95 51\n",
      "95 52\n",
      "95 53\n",
      "95 54\n",
      "95 55\n",
      "95 56\n",
      "95 57\n",
      "95 58\n",
      "95 59\n",
      "95 60\n",
      "95 61\n",
      "95 62\n",
      "95 63\n",
      "95 65\n",
      "95 66\n",
      "95 67\n",
      "95 68\n",
      "95 69\n",
      "95 70\n",
      "95 71\n",
      "95 72\n",
      "95 73\n",
      "95 74\n",
      "95 75\n",
      "95 76\n",
      "95 77\n",
      "95 78\n",
      "95 79\n",
      "95 81\n",
      "95 82\n",
      "95 83\n",
      "95 84\n",
      "95 85\n",
      "95 86\n",
      "95 87\n",
      "95 89\n",
      "95 90\n",
      "95 91\n",
      "95 93\n",
      "95 97\n",
      "95 98\n",
      "95 99\n",
      "96 32\n",
      "96 33\n",
      "96 34\n",
      "96 35\n",
      "96 36\n",
      "96 37\n",
      "96 38\n",
      "96 39\n",
      "96 40\n",
      "96 41\n",
      "96 42\n",
      "96 43\n",
      "96 44\n",
      "96 45\n",
      "96 46\n",
      "96 47\n",
      "96 48\n",
      "96 49\n",
      "96 50\n",
      "96 51\n",
      "96 52\n",
      "96 53\n",
      "96 54\n",
      "96 55\n",
      "96 56\n",
      "96 57\n",
      "96 58\n",
      "96 59\n",
      "96 60\n",
      "96 61\n",
      "96 62\n",
      "96 63\n",
      "97 3\n",
      "97 7\n",
      "97 11\n",
      "97 15\n",
      "97 19\n",
      "97 23\n",
      "97 27\n",
      "97 31\n",
      "97 32\n",
      "97 33\n",
      "97 34\n",
      "97 35\n",
      "97 36\n",
      "97 37\n",
      "97 38\n",
      "97 39\n",
      "97 40\n",
      "97 41\n",
      "97 42\n",
      "97 43\n",
      "97 44\n",
      "97 45\n",
      "97 46\n",
      "97 47\n",
      "97 48\n",
      "97 49\n",
      "97 50\n",
      "97 51\n",
      "97 52\n",
      "97 53\n",
      "97 54\n",
      "97 55\n",
      "97 56\n",
      "97 57\n",
      "97 58\n",
      "97 59\n",
      "97 60\n",
      "97 61\n",
      "97 62\n",
      "97 63\n",
      "97 67\n",
      "97 71\n",
      "97 75\n",
      "97 79\n",
      "97 83\n",
      "97 87\n",
      "97 91\n",
      "97 95\n",
      "97 99\n",
      "98 6\n",
      "98 7\n",
      "98 14\n",
      "98 15\n",
      "98 22\n",
      "98 23\n",
      "98 30\n",
      "98 31\n",
      "98 32\n",
      "98 33\n",
      "98 34\n",
      "98 35\n",
      "98 36\n",
      "98 37\n",
      "98 38\n",
      "98 39\n",
      "98 40\n",
      "98 41\n",
      "98 42\n",
      "98 43\n",
      "98 44\n",
      "98 45\n",
      "98 46\n",
      "98 47\n",
      "98 48\n",
      "98 49\n",
      "98 50\n",
      "98 51\n",
      "98 52\n",
      "98 53\n",
      "98 54\n",
      "98 55\n",
      "98 56\n",
      "98 57\n",
      "98 58\n",
      "98 59\n",
      "98 60\n",
      "98 61\n",
      "98 62\n",
      "98 63\n",
      "98 70\n",
      "98 71\n",
      "98 78\n",
      "98 79\n",
      "98 86\n",
      "98 87\n",
      "98 94\n",
      "98 95\n",
      "99 1\n",
      "99 5\n",
      "99 6\n",
      "99 7\n",
      "99 9\n",
      "99 13\n",
      "99 14\n",
      "99 15\n",
      "99 17\n",
      "99 21\n",
      "99 22\n",
      "99 23\n",
      "99 25\n",
      "99 29\n",
      "99 30\n",
      "99 31\n",
      "99 32\n",
      "99 33\n",
      "99 34\n",
      "99 35\n",
      "99 36\n",
      "99 37\n",
      "99 38\n",
      "99 39\n",
      "99 40\n",
      "99 41\n",
      "99 42\n",
      "99 43\n",
      "99 44\n",
      "99 45\n",
      "99 46\n",
      "99 47\n",
      "99 48\n",
      "99 49\n",
      "99 50\n",
      "99 51\n",
      "99 52\n",
      "99 53\n",
      "99 54\n",
      "99 55\n",
      "99 56\n",
      "99 57\n",
      "99 58\n",
      "99 59\n",
      "99 60\n",
      "99 61\n",
      "99 62\n",
      "99 63\n",
      "99 65\n",
      "99 69\n",
      "99 70\n",
      "99 71\n",
      "99 73\n",
      "99 77\n",
      "99 78\n",
      "99 79\n",
      "99 81\n",
      "99 85\n",
      "99 86\n",
      "99 87\n",
      "99 89\n",
      "99 93\n",
      "99 94\n",
      "99 95\n",
      "99 97\n"
     ]
    }
   ],
   "source": [
    "for a in range(100):\n",
    "    for b in range(100):\n",
    "        r1 = (a^b) ^ ((a & b) << 1)\n",
    "        r2 = a+b\n",
    "        if r1 != r2:\n",
    "            print(a,b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Solution:\n",
    "    def add(self, a: int, b: int) -> int:\n",
    "        x = 0xffffffff\n",
    "        a\n",
    "        if b == 0:\n",
    "            return a\n",
    "        a,b = a^b, (a&b) << 1\n",
    "        return self.add(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "output_type": "error",
     "ename": "RecursionError",
     "evalue": "maximum recursion depth exceeded in comparison",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mRecursionError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-32-4cdc2899cf4a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mSolution\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-25-f2d15bd9bb38>\u001b[0m in \u001b[0;36madd\u001b[0;34m(self, a, b)\u001b[0m\n\u001b[1;32m      4\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m         \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m^\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m&\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<<\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "... last 1 frames repeated, from the frame below ...\n",
      "\u001b[0;32m<ipython-input-25-f2d15bd9bb38>\u001b[0m in \u001b[0;36madd\u001b[0;34m(self, a, b)\u001b[0m\n\u001b[1;32m      4\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m         \u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m^\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m&\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<<\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded in comparison"
     ]
    }
   ],
   "source": [
    "Solution().add(-1,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "-7\n((a & b) << 1 = 4\n"
     ]
    }
   ],
   "source": [
    "a=-1\n",
    "b = 2\n",
    "print((a^b) ^ ((a & b) << 1))\n",
    "print(\"((a & b) << 1 =\", ((a & b) << 1)) # 到这一步就没有了"
   ]
  },
  {
   "source": [
    "## python中的负数的存储"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "source": [
    "Python，Java 等语言中的数字都是以 补码 形式存储的。\n",
    "\n",
    "但 Python 没有 int , long 等不同长度变量，即在编程时无变量位数的概念。\n",
    "\n",
    "获取负数的补码： 需要将数字与十六进制数 0xffffffff 相与。\n",
    "\n",
    "可理解为舍去此数字 32 位以上的数字（将 32 位以上都变为 00 ），\n",
    "从无限长度变为一个 32 位整数。\n",
    "\n",
    "返回前数字还原： 若补码 aa 为负数（ 0x7fffffff 是最大的正数的补码 ），\n",
    "\n",
    "需执行 ~(a ^ x) 操作，将补码还原至 Python 的存储格式。\n",
    "\n",
    " a ^ x 运算将 1 至 32 位按位取反； ~ 运算是将整个数字取反；\n",
    " \n",
    " 因此， ~(a ^ x) 是将 32 位以上的位取反，1 至 32 位不变。\n",
    "\n",
    "作者：jyd\n",
    "链接：https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/solution/mian-shi-ti-65-bu-yong-jia-jian-cheng-chu-zuo-ji-7/\n",
    "来源：力扣（LeetCode）\n",
    "著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。"
   ],
   "cell_type": "markdown",
   "metadata": {}
  }
 ]
}